/**
 * 图片暂存记录同步工具
 * 用于测试和验证图片数据的实时同步更新机制
 */

// 测试图片数据处理函数
export function testImageDataProcessing() {
  console.log('=== 开始测试图片数据处理 ===');
  
  // 模拟各种格式的图片数据
  const testImageData = [
    // 标准格式
    {
      url: '...',
      file: null,
      isNewUpload: false
    },
    // 字符串格式
    '',
    // 后端返回格式
    {
      id: 'img_001',
      data: '/9j/4AAQSkZJRgABAQAAAQABAAD...'
    },
    // HTTP URL格式
    'https://example.com/image.jpg',
    // 微信小程序临时文件
    'wxfile://tmp_123456789.jpg'
  ];
  
  console.log('测试数据:', testImageData);
  
  // 处理测试数据
  const processedData = testImageData.map((item, index) => {
    if (!item) return null;
    
    if (typeof item === 'object' && item.url) {
      return {
        url: item.url,
        file: item.file || null,
        originalPath: item.originalPath || item.url,
        isNewUpload: item.isNewUpload || false,
        id: item.id || `img_${Date.now()}_${index}`,
        timestamp: Date.now(),
        size: item.size || 0,
        type: item.type || 'image/jpeg'
      };
    }
    
    if (typeof item === 'string') {
      return {
        url: item,
        file: null,
        originalPath: item,
        isNewUpload: false,
        id: `img_${Date.now()}_${index}`,
        timestamp: Date.now(),
        type: 'image/jpeg'
      };
    }
    
    if (typeof item === 'object' && (item.id || item.data)) {
      const imageUrl = item.data || item.url || item;
      return {
        url: imageUrl,
        file: null,
        originalPath: imageUrl,
        isNewUpload: false,
        id: item.id || `img_${Date.now()}_${index}`,
        timestamp: Date.now(),
        type: 'image/jpeg'
      };
    }
    
    return null;
  }).filter(Boolean);
  
  console.log('处理后的数据:', processedData);
  console.log('=== 图片数据处理测试完成 ===');
  
  return processedData;
}

// 测试全局存储同步
export function testGlobalStorageSync() {
  console.log('=== 开始测试全局存储同步 ===');
  
  if (typeof window === 'undefined') {
    console.log('非浏览器环境，跳过测试');
    return;
  }
  
  // 初始化全局存储
  if (!window.recordUpdateStorage) {
    window.recordUpdateStorage = {};
  }
  
  // 模拟记录数据
  const testRecordKey = 'test_project_test_site_test_row_usage';
  const testRecordData = {
    updatedValue: '100',
    imageList: testImageDataProcessing(),
    accProblem: '测试问题描述',
    timestamp: Date.now(),
    right_value: '100',
    acc_problem: '测试问题描述',
    photo_path: testImageDataProcessing(),
    projectId: 'test_project',
    siteId: 'test_site'
  };
  
  // 保存到全局存储
  window.recordUpdateStorage[testRecordKey] = testRecordData;
  console.log('保存测试数据到全局存储:', testRecordKey);
  
  // 验证数据是否正确保存
  const retrievedData = window.recordUpdateStorage[testRecordKey];
  console.log('从全局存储获取的数据:', retrievedData);
  
  // 验证图片数据完整性
  const imageCount = retrievedData.imageList ? retrievedData.imageList.length : 0;
  console.log('图片数据完整性检查 - 图片数量:', imageCount);
  
  if (imageCount > 0) {
    console.log('第一张图片数据:', retrievedData.imageList[0]);
  }
  
  console.log('=== 全局存储同步测试完成 ===');
  
  return retrievedData;
}

// 测试数据恢复功能
export function testDataRecovery(projectId, siteId, rowId, type) {
  console.log('=== 开始测试数据恢复功能 ===');
  
  if (typeof window === 'undefined') {
    console.log('非浏览器环境，跳过测试');
    return null;
  }
  
  const recordKey = `${projectId}_${siteId}_${rowId}_${type}`;
  console.log('构建的recordKey:', recordKey);
  
  const storedData = window.recordUpdateStorage && window.recordUpdateStorage[recordKey];
  
  if (storedData) {
    console.log('找到暂存数据:', storedData);
    console.log('数据包含图片数量:', storedData.imageList ? storedData.imageList.length : 0);
    
    // 验证数据格式
    const isValidData = storedData.updatedValue !== undefined && 
                       Array.isArray(storedData.imageList) &&
                       storedData.accProblem !== undefined;
    
    console.log('数据格式验证:', isValidData ? '通过' : '失败');
    
    return storedData;
  } else {
    console.log('未找到暂存数据');
    return null;
  }
}

// 清理测试数据
export function cleanupTestData() {
  console.log('=== 清理测试数据 ===');
  
  if (typeof window !== 'undefined' && window.recordUpdateStorage) {
    // 删除测试数据
    Object.keys(window.recordUpdateStorage).forEach(key => {
      if (key.startsWith('test_')) {
        delete window.recordUpdateStorage[key];
        console.log('删除测试数据:', key);
      }
    });
  }
  
  console.log('=== 测试数据清理完成 ===');
}

// 导出所有测试函数
export default {
  testImageDataProcessing,
  testGlobalStorageSync,
  testDataRecovery,
  cleanupTestData
};